#-------------------------------------------------
#
# Project created by QtCreator 2024-01-16T18:17:50
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport

TARGET = RobotSimulation
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0




SOURCES += \
        main.cpp \
        mainwindow.cpp \
    drawpathwidget.cpp \
    global.cpp \
    eventinteraction.cpp \
    ifkinematicshandle.cpp \
    simulatecontrolwidget.cpp \
    setrobotparameterdialog.cpp \
    teachwidget.cpp \
    robotsimulatewidget.cpp \
    pathelement.cpp \
    customobjectdialog.cpp \
    osgwidget.cpp \
    readthread.cpp \
    commonfunc.cpp \
    element.cpp \
    hansrobot.cpp \
    robotkinematics.cpp \
    connectrobotdialog.cpp \
    trajectoryplanwidget.cpp \
    qcustomplot.cpp \
    curvewidget.cpp \
    RobotTrajectoryPlan.cpp \
    cloudprocesswidget.cpp \
    cloudprocessdepend.cpp

HEADERS += \
    mainwindow.h \
    drawpathwidget.h \
    global.h \
    eventinteraction.h \
    ifkinematicshandle.h \
    simulatecontrolwidget.h \
    setrobotparameterdialog.h \
    teachwidget.h \
    robotsimulatewidget.h \
    pathelement.h \
    customobjectdialog.h \
    osgwidget.h \
    readthread.h \
    commonfunc.h \
    element.h \
    hansrobot.h \
    robotkinematics.h \
    connectrobotdialog.h \
    trajectoryplanwidget.h \
    qcustomplot.h \
    curvewidget.h \
    RobotTrajectoryPlan.h \
    cloudprocesswidget.h \
    cloudprocessdepend.h

FORMS += \
        mainwindow.ui \
    setrobotparameterdialog.ui \
    teachwidget.ui \
    customobjectdialog.ui \
    connectrobotdialog.ui \
    trajectoryplanwidget.ui \
    curvewidget.ui \
    cloudprocesswidget.ui


## OSG and Eigen ��
libpath = $$PWD/Dependences/OSG/build/lib/

#win32: LIBS += -L$$libpath -lOpenThreadsd \
#               -L$$libpath -losgd \
#               -L$$libpath -losgDBd \
#               -L$$libpath -losgGAd \
#               -L$$libpath -losgQt5d \
#               -L$$libpath -losgTextd \
#               -L$$libpath -losgUtild \
#               -L$$libpath -losgViewerd \


win32: LIBS += -L$$libpath -lOpenThreads \
               -L$$libpath -losg \
               -L$$libpath -losgDB \
               -L$$libpath -losgGA \
               -L$$libpath -losgQt5 \
               -L$$libpath -losgText \
               -L$$libpath -losgUtil \
               -L$$libpath -losgViewer \


INCLUDEPATH += $$PWD/Dependences/OSG/build/include
DEPENDPATH += $$PWD/Dependences/OSG/build/include


QT += opengl

RESOURCES += \
    image.qrc \
    qss.qrc

INCLUDEPATH += $$PWD/Dependences/Eigen/eigen-3.4.0
INCLUDEPATH += $$PWD/Dependences/Eigen/eigen-3.4.0/Eigen/src/LU

## KDL ��
libpath = $$PWD/Dependences/KDL/lib/

win32: LIBS += -L$$libpath -lorocos-kdl \


INCLUDEPATH += $$PWD/Dependences/KDL/include/kdl
INCLUDEPATH += $$PWD/Dependences/KDL/include
INCLUDEPATH += $$PWD/Dependences/KDL/include/kdl/utilities
DEPENDPATH += $$PWD/Dependences/KDL/include/kdl
DEPENDPATH += $$PWD/Dependences/KDL/include
DEPENDPATH += $$PWD/Dependences/KDL/include/kdl/utilities
INCLUDEPATH += $$PWD/Dependences/KDL/lib
DEPENDPATH += $$PWD/Dependences/KDL/lib


# HansRobot Lib
libpath = $$PWD/Dependences/HansRobot/lib/

win32: LIBS += -L$$libpath -lHR_Pro \


INCLUDEPATH += $$PWD/Dependences/HansRobot/include
DEPENDPATH += $$PWD/Dependences/HansRobot/include

## PLC
INCLUDEPATH += $$PWD/Dependences/PCL
INCLUDEPATH += $$PWD/Dependences/PCL/include/pcl-1.8
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/Boost/include/boost-1_64
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/Boost/include/boost-1_64/boost
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/Eigen/eigen3
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/FLANN/include
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/FLANN/include/flann
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/OpenNI2/Include
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/Qhull/include
INCLUDEPATH += $$PWD/Dependences/PCL/3rdParty/VTK/include/vtk-8.0

libpath = $$PWD/Dependences/PCL/lib
win32: LIBS += -L$$libpath -lpcl_common_release \
               -L$$libpath -lpcl_features_release \
               -L$$libpath -lpcl_filters_release \
               -L$$libpath -lpcl_io_ply_release \
               -L$$libpath -lpcl_io_release \
               -L$$libpath -lpcl_kdtree_release \
               -L$$libpath -lpcl_keypoints_release \
               -L$$libpath -lpcl_ml_release \
               -L$$libpath -lpcl_octree_release \
               -L$$libpath -lpcl_outofcore_release \
               -L$$libpath -lpcl_people_release \
               -L$$libpath -lpcl_recognition_release \
               -L$$libpath -lpcl_registration_release \
               -L$$libpath -lpcl_sample_consensus_release \
               -L$$libpath -lpcl_octree_release \
               -L$$libpath -lpcl_search_release \
               -L$$libpath -lpcl_segmentation_release \
               -L$$libpath -lpcl_stereo_release \
               -L$$libpath -lpcl_surface_release \
               -L$$libpath -lpcl_tracking_release \
               -L$$libpath -lpcl_visualization_release \

libpath = $$PWD/Dependences/PCL/3rdParty/Boost/lib
win32: LIBS += -L$$libpath -llibboost_atomic-vc140-mt-1_64\
               -L$$libpath -llibboost_bzip2-vc140-mt-1_64\
               -L$$libpath -llibboost_chrono-vc140-mt-1_64\
               -L$$libpath -llibboost_container-vc140-mt-1_64\
               -L$$libpath -llibboost_context-vc140-mt-1_64\
               -L$$libpath -llibboost_coroutine-vc140-mt-1_64\
               -L$$libpath -llibboost_date_time-vc140-mt-1_64\
               -L$$libpath -llibboost_exception-vc140-mt-1_64\
               -L$$libpath -llibboost_fiber-vc140-mt-1_64\
               -L$$libpath -llibboost_filesystem-vc140-mt-1_64\
               -L$$libpath -llibboost_graph_parallel-vc140-mt-1_64\
               -L$$libpath -llibboost_graph-vc140-mt-1_64\
               -L$$libpath -llibboost_iostreams-vc140-mt-1_64\
               -L$$libpath -llibboost_locale-vc140-mt-1_64\
               -L$$libpath -llibboost_log_setup-vc140-mt-1_64\
               -L$$libpath -llibboost_log-vc140-mt-1_64\
               -L$$libpath -llibboost_math_c99f-vc140-mt-1_64\
               -L$$libpath -llibboost_math_c99l-vc140-mt-1_64\
               -L$$libpath -llibboost_math_c99-vc140-mt-1_64\
               -L$$libpath -llibboost_math_tr1f-vc140-mt-1_64\
               -L$$libpath -llibboost_math_tr1l-vc140-mt-1_64\
               -L$$libpath -llibboost_math_tr1-vc140-mt-1_64\
               -L$$libpath -llibboost_mpi-vc140-mt-1_64\
               -L$$libpath -llibboost_numpy3-vc140-mt-1_64\
               -L$$libpath -llibboost_numpy-vc140-mt-1_64\
               -L$$libpath -llibboost_prg_exec_monitor-vc140-mt-1_64\
               -L$$libpath -llibboost_program_options-vc140-mt-1_64\
               -L$$libpath -llibboost_python3-vc140-mt-1_64\
               -L$$libpath -llibboost_python-vc140-mt-1_64\
               -L$$libpath -llibboost_random-vc140-mt-1_64\
               -L$$libpath -llibboost_regex-vc140-mt-1_64\
               -L$$libpath -llibboost_serialization-vc140-mt-1_64\
               -L$$libpath -llibboost_signals-vc140-mt-1_64\
               -L$$libpath -llibboost_system-vc140-mt-1_64\
               -L$$libpath -llibboost_test_exec_monitor-vc140-mt-1_64\
               -L$$libpath -llibboost_thread-vc140-mt-1_64\
               -L$$libpath -llibboost_timer-vc140-mt-1_64\
               -L$$libpath -llibboost_type_erasure-vc140-mt-1_64\
               -L$$libpath -llibboost_unit_test_framework-vc140-mt-1_64\
               -L$$libpath -llibboost_wave-vc140-mt-1_64\
               -L$$libpath -llibboost_wserialization-vc140-mt-1_64\
               -L$$libpath -llibboost_zlib-vc140-mt-1_64


libpath = $$PWD/Dependences/PCL/3rdParty/FLANN/lib
LIBS +=        -L$$libpath -lflann\
               -L$$libpath -lflann_cpp\
               -L$$libpath -lflann_cpp_s\
               -L$$libpath -lflann_s


libpath = $$PWD/Dependences/PCL/3rdParty/OpenNI2/Lib
LIBS +=        -L$$libpath -lOpenNI2


libpath = $$PWD/Dependences/PCL/3rdParty/Qhull/lib
LIBS +=        -L$$libpath -lqhull\
               -L$$libpath -lqhullcpp\
               -L$$libpath -lqhullstatic\
               -L$$libpath -lqhullstatic_r\
               -L$$libpath -lqhull_p\
               -L$$libpath -lqhull_r


# VTK
INCLUDEPATH += $$PWD/Dependences/VTK/include/vtk-8.0
INCLUDEPATH += $$PWD/Dependences/VTK/bin
DEPENDPATH += $$PWD/Dependences/VTK/include

libpath = $$PWD/Dependences/VTK/lib
win32: LIBS += -L$$libpath -lvtkalglib-8.0 \
               -L$$libpath -lvtkChartsCore-8.0\
               -L$$libpath -lvtkCommonColor-8.0\
               -L$$libpath -lvtkCommonComputationalGeometry-8.0\
               -L$$libpath -lvtkCommonCore-8.0 \
               -L$$libpath -lvtkCommonDataModel-8.0\
               -L$$libpath -lvtkCommonExecutionModel-8.0\
               -L$$libpath -lvtkCommonMath-8.0\
               -L$$libpath -lvtkCommonMisc-8.0\
               -L$$libpath -lvtkCommonSystem-8.0\
               -L$$libpath -lvtkCommonTransforms-8.0\
               -L$$libpath -lvtkDICOMParser-8.0\
               -L$$libpath -lvtkDomainsChemistry-8.0\
               -L$$libpath -lvtkDomainsChemistryOpenGL2-8.0\
               -L$$libpath -lvtkexoIIc-8.0\
               -L$$libpath -lvtkexpat-8.0\
               -L$$libpath -lvtkFiltersAMR-8.0\
               -L$$libpath -lvtkFiltersCore-8.0\
               -L$$libpath -lvtkFiltersExtraction-8.0\
               -L$$libpath -lvtkFiltersFlowPaths-8.0\
               -L$$libpath -lvtkFiltersGeneral-8.0\
               -L$$libpath -lvtkFiltersGeneric-8.0\
               -L$$libpath -lvtkFiltersGeometry-8.0\
               -L$$libpath -lvtkFiltersHybrid-8.0\
               -L$$libpath -lvtkFiltersHyperTree-8.0\
               -L$$libpath -lvtkFiltersImaging-8.0\
               -L$$libpath -lvtkFiltersModeling-8.0\
               -L$$libpath -lvtkFiltersParallel-8.0\
               -L$$libpath -lvtkFiltersParallelImaging-8.0\
               -L$$libpath -lvtkFiltersPoints-8.0\
               -L$$libpath -lvtkFiltersProgrammable-8.0\
               -L$$libpath -lvtkFiltersSelection-8.0\
               -L$$libpath -lvtkFiltersSMP-8.0\
               -L$$libpath -lvtkFiltersSources-8.0\
               -L$$libpath -lvtkFiltersStatistics-8.0\
               -L$$libpath -lvtkFiltersTexture-8.0\
               -L$$libpath -lvtkFiltersTopology-8.0\
               -L$$libpath -lvtkFiltersVerdict-8.0\
               -L$$libpath -lvtkfreetype-8.0\
               -L$$libpath -lvtkGeovisCore-8.0\
               -L$$libpath -lvtkgl2ps-8.0\
               -L$$libpath -lvtkglew-8.0\
               -L$$libpath -lvtkGUISupportQt-8.0\
               -L$$libpath -lvtkGUISupportQtSQL-8.0\
               -L$$libpath -lvtkhdf5-8.0\
               -L$$libpath -lvtkhdf5_hl-8.0\
               -L$$libpath -lvtkImagingColor-8.0\
               -L$$libpath -lvtkImagingCore-8.0\
               -L$$libpath -lvtkImagingFourier-8.0\
               -L$$libpath -lvtkImagingGeneral-8.0\
               -L$$libpath -lvtkImagingHybrid-8.0\
               -L$$libpath -lvtkImagingMath-8.0\
               -L$$libpath -lvtkImagingMorphological-8.0\
               -L$$libpath -lvtkImagingSources-8.0\
               -L$$libpath -lvtkImagingStatistics-8.0\
               -L$$libpath -lvtkImagingStencil-8.0\
               -L$$libpath -lvtkInfovisCore-8.0\
               -L$$libpath -lvtkInfovisLayout-8.0\
               -L$$libpath -lvtkInteractionImage-8.0\
               -L$$libpath -lvtkInteractionStyle-8.0\
               -L$$libpath -lvtkInteractionWidgets-8.0\
               -L$$libpath -lvtkIOAMR-8.0\
               -L$$libpath -lvtkIOCore-8.0\
               -L$$libpath -lvtkIOEnSight-8.0\
               -L$$libpath -lvtkIOExodus-8.0\
               -L$$libpath -lvtkIOExport-8.0\
               -L$$libpath -lvtkIOExportOpenGL2-8.0\
               -L$$libpath -lvtkIOGeometry-8.0\
               -L$$libpath -lvtkIOImage-8.0\
               -L$$libpath -lvtkIOImport-8.0\
               -L$$libpath -lvtkIOInfovis-8.0\
               -L$$libpath -lvtkIOLegacy-8.0\
               -L$$libpath -lvtkIOLSDyna-8.0\
               -L$$libpath -lvtkIOMINC-8.0\
               -L$$libpath -lvtkIOMovie-8.0\
               -L$$libpath -lvtkIONetCDF-8.0\
               -L$$libpath -lvtkIOParallel-8.0\
               -L$$libpath -lvtkIOParallelXML-8.0\
               -L$$libpath -lvtkIOPLY-8.0\
               -L$$libpath -lvtkIOSQL-8.0\
               -L$$libpath -lvtkIOTecplotTable-8.0\
               -L$$libpath -lvtkIOVideo-8.0\
               -L$$libpath -lvtkIOXML-8.0\
               -L$$libpath -lvtkIOXMLParser-8.0\
               -L$$libpath -lvtkjpeg-8.0\
               -L$$libpath -lvtkjsoncpp-8.0\
               -L$$libpath -lvtklibharu-8.0\
               -L$$libpath -lvtklibxml2-8.0\
               -L$$libpath -lvtklz4-8.0\
               -L$$libpath -lvtkmetaio-8.0\
               -L$$libpath -lvtkNetCDF-8.0\
               -L$$libpath -lvtknetcdf_c++\
               -L$$libpath -lvtkoggtheora-8.0\
               -L$$libpath -lvtkParallelCore-8.0\
               -L$$libpath -lvtkpng-8.0\
               -L$$libpath -lvtkproj4-8.0\
               -L$$libpath -lvtkRenderingAnnotation-8.0\
               -L$$libpath -lvtkRenderingContext2D-8.0\
               -L$$libpath -lvtkRenderingContextOpenGL2-8.0\
               -L$$libpath -lvtkRenderingCore-8.0\
               -L$$libpath -lvtkRenderingFreeType-8.0\
               -L$$libpath -lvtkRenderingGL2PSOpenGL2-8.0\
               -L$$libpath -lvtkRenderingImage-8.0\
               -L$$libpath -lvtkRenderingLabel-8.0\
               -L$$libpath -lvtkRenderingLOD-8.0\
               -L$$libpath -lvtkRenderingOpenGL2-8.0\
               -L$$libpath -lvtkRenderingQt-8.0\
               -L$$libpath -lvtkRenderingVolume-8.0\
               -L$$libpath -lvtkRenderingVolumeOpenGL2-8.0\
               -L$$libpath -lvtksqlite-8.0\
               -L$$libpath -lvtksys-8.0\
               -L$$libpath -lvtktiff-8.0\
               -L$$libpath -lvtkverdict-8.0\
               -L$$libpath -lvtkViewsContext2D-8.0\
               -L$$libpath -lvtkViewsCore-8.0\
               -L$$libpath -lvtkViewsInfovis-8.0\
               -L$$libpath -lvtkViewsQt-8.0\
               -L$$libpath -lvtkzlib-8.0\

win32 {
  LIBS += "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib/User32.Lib"
}

win32:CONFIG(release, debug|release): LIBS += -L'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x64/' -lOpenGL32
else:win32:CONFIG(debug, debug|release): LIBS += -L'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x64/' -lOpenGL32d
else:unix: LIBS += -L'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x64/' -lOpenGL32

INCLUDEPATH += 'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x64'
DEPENDPATH += 'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.14393.0/um/x64'
